home *** CD-ROM | disk | FTP | other *** search
/ Tiger Disk 13 / Tiger_Disk_013_19xx_Tiger-Crew-Disk_de_Side_B.d64 / lektion 6 (.txt) < prev    next >
Commodore BASIC  |  2023-02-26  |  8KB  |  212 lines

  1. 1 rem*********************************
  2. 2 rem*----------lektion-6------------*
  3. 3 rem*-------------------------------*
  4. 4 rem*----(w)-by-arno-freisinger-----*
  5. 5 rem*-------------------------------*
  6. 6 rem*--------teachmaster------------*
  7. 7 rem*-------------------------------*
  8. 8 rem*********************************
  9. 10 poke 53280 , 11 : poke 53281 , 11 : print "[155]" : poke 2050 , 1
  10. 15 sys 42291 : poke 46 , peek(35) : poke 45 , peek (781) + 2 : clr
  11. 20 print"[147]"tab(15)"teachmaster"
  12. 30 print""tab(09)"(w) by arno freisinger"
  13. 40 print""tab(10)"                    "
  14. 50 for i = 1 to 2000 : next
  15. 60 print"[147]"tab(15)"lektion 6"
  16. 70 for i = 1 to 1000 : next
  17. 80 get a$ : get a$ : get a$
  18. 100 rem********************************
  19. 110 rem*--------- seite 1 ------------*
  20. 120 rem********************************
  21. 130 print"[147]in dieser lektion wollen wir ein paar"
  22. 140 print"neue befehle kennenlernen."
  23. 150 print"der erste befehl in dieser lektion "
  24. 160 print"ist jmp[146]. er ist vergleichbar mit dem"
  25. 170 print"befehl goto. der jmp-befehl ist 3 bytes"
  26. 180 print"lang. er lautet korrekt jmp (adresse)."
  27. 190 print"der naechste befehl ist jsr[146]. er ist"
  28. 200 print"der gosub-befehl in maschinensprache."
  29. 210 print"er lautet korrekt so: jsr (adresse)."
  30. 220 print""tab(14)"taste druecken"
  31. 230 print""tab(18)"-1-"
  32. 232 gosub 250 : on a goto 300 , 60
  33. 240 rem********************************
  34. 245 rem*-------tasten-abfrage---------*
  35. 247 rem********************************
  36. 250 get a$ : if a$ = "" then 250
  37. 255 if a$ = "z" then a = 2 : return
  38. 260 a = 1 : return
  39. 270 rem********************************
  40. 280 rem*---------- seite 2 -----------*
  41. 290 rem********************************
  42. 300 print"[147]bei diesem befehl wird die aktuelle"
  43. 310 print"adresse in den stack gelegt, zur er-"
  44. 320 print"innerung der stack ist eine art "
  45. 330 print"zwischenspeicher. im bekannten format"
  46. 340 print"low-byte, hi-byte. der return-befehl in"
  47. 350 print"maschinensprache lautet rts. ihn haben"
  48. 360 print"wir aber schon kennengelernt.    "
  49. 370 print"der naechste befehl lautet nop. dies ist"
  50. 380 print"ein komischer kamerad, er hat naem-"
  51. 390 print"lich keine funktion. er heisst auch auf"
  52. 410 print""tab(14)"taste druecken"
  53. 420 print""tab(18)"-2-" : gosub 250 : on a goto 440 , 100
  54. 430 rem********************************
  55. 440 rem*-------- seite 3 -------------*
  56. 450 rem********************************
  57. 455 print"[147]deutsch ungefaehr keine operation."
  58. 460 print"so, jetzt wollen wir unserem computer"
  59. 470 print"das rechnen beibringen. zuerst einmal"
  60. 480 print"addieren, dies tun wir mit adc[146]."
  61. 490 print"bevor wir nun anfangen zu rechnen "
  62. 500 print"muessen wir das c-flag loeschen, um"
  63. 510 print"festzustellen,ob das ergebnis groesser"
  64. 520 print"als 255 ist.zuerst die direkte adress-"
  65. 530 print"ierung.dort lautet der befehl so "
  66. 550 print"adc (wert). der wert wird mit dem akku"
  67. 570 printtab(14)"taste druecken"
  68. 580 print""tab(18)"-3-" : gosub 250 : on a goto 600 , 300
  69. 590 rem********************************
  70. 600 rem*-------- seite 4 -------------*
  71. 610 rem********************************
  72. 620 print"[147]addiert."
  73. 630 print"nun wieder ein kleines programm :"
  74. 631 print""tab(14)"taste druecken"
  75. 632 print""tab(18)"-4-"
  76. 633 gosub 250 : on a goto 636 , 440
  77. 634 rem********************************
  78. 635 rem*-------- seite 5 -------------*
  79. 636 rem********************************
  80. 640 print"[147] lda $1000;wert aus speicherstelle "
  81. 650 print"         ;$1000 (4096) in den akku ."
  82. 655 print" clc     ;c-flag loeschen"
  83. 660 print" adc #$10;akku mit $10 (16) addieren"
  84. 670 print" bcs loop;wenn c-flag = 1 dann nach loop"
  85. 680 print" rts     ;wenn c-flag = 0 war dann zu-"
  86. 690 print"         ;rueck (hier ins basic)
  87. 700 [153]"loop clc ;wenn c-flag = 1 war, dann "
  88. 710 [153]"         ;c-flag loeschen"
  89. 720 [153]"     rts ;zurueck (hier ins basic)
  90. 730 print""tab(14)"taste druecken)"
  91. 740 print""tab(18)"-5-"
  92. 750 gosub 250 : on a goto 770 , 600
  93. 760 rem********************************
  94. 770 rem*-------- seite 6 -------------*
  95. 780 rem********************************
  96. 790 print"[147]dies war ein kleines programm,das ihnen"
  97. 800 print"die funktionsweise der befehle ver-"
  98. 810 print"deutlichen soll. nun weiter mit der"
  99. 820 print"subtraktion. der befehl dazu lautet sbc[146]."
  100. 830 print"hier sollten sie das c-flag setzen, da"
  101. 840 print"sie feststellen muessen,ob die rechen-"
  102. 850 print"operation eine minus zahl ergeben hat."
  103. 860 print"hier sehen wir eine weitere funktion des"
  104. 870 print"c-flags,es reagiert nicht nur auf ueber-"
  105. 880 print"laeufe (groesser als 255), sondern auch"
  106. 900 print""tab(14)"taste druecken"
  107. 910 print""tab(18)"-6-"
  108. 920 gosub 250 : on a goto 940 , 636
  109. 930 rem********************************
  110. 940 rem*------- seite 7 --------------*
  111. 950 rem********************************
  112. 960 print"[147]auf zahlen, die kleiner als 0 sind."
  113. 970 print"das c-flag ist ist also ein bit, das"
  114. 980 print"uns jede illegale zahl anzeigt."
  115. 990 print"so,jetzt koennen sie einfache rechnungen"
  116. 1000 print"durchfuehren. fuer die multiplikation"
  117. 1010 print"und division existieren leider keine"
  118. 1020 print"befehle. hierzu muessen sie ihr eigenes"
  119. 1030 print"programm schreiben. lassen sie sich da-"
  120. 1040 print"durch nicht entmutigen,ich zeige ihnen,"
  121. 1050 print"wie sie diese tatsache umgehen koennen."
  122. 1060 printtab(14)"taste druecken"
  123. 1070 print""tab(18)"-7-"
  124. 1080 gosub 250 : on a goto 1100 , 770
  125. 1090 rem*******************************
  126. 1100 rem*------- seite 8 -------------*
  127. 1110 rem*******************************
  128. 1120 print"[147]dazu aber spaeter. haben sie schon vom"
  129. 1130 print"kernal gehoert. dies ist bei fast allen"
  130. 1140 print"commodore computern gleich. dort sind"
  131. 1150 print"nuetzliche routinen zusammen gefasst."
  132. 1160 print"die erste, die wir davon nutzen wollen"
  133. 1170 print"heisst chrout[146] und deren startadresse"
  134. 1180 print"liegt bei $ffd2. sie muessen vor dem"
  135. 1190 print"ansprung (jmp oder jsr) den wert des"
  136. 1200 print"zeichens im ascii-code in den akku laden"
  137. 1220 print""tab(14)"taste druecken"
  138. 1230 print""tab(18)"-8-"
  139. 1240 gosub 250 : on a goto 1250 , 940
  140. 1250 rem*******************************
  141. 1260 rem*------- seite 9 -------------*
  142. 1270 rem*******************************
  143. 1280 print"[147]und danach die routine anspringen."
  144. 1290 print"die routine druckt das zeichen bei der"
  145. 1300 print"aktuellen cursorposition aus, die zuvor"
  146. 1310 print"um eins erhoeht worden ist."
  147. 1320 print"wissen sie nichts ueber den ascii-code,"
  148. 1330 print"code, dann schlagen sie im anhang des"
  149. 1340 print"handbuchs nach, dort ist er aufgefuehrt."
  150. 1350 print"jetzt zum programm :"
  151. 1360 print" lda #65   ;ascii-code fuer a"
  152. 1370 print" jmp $ffd2 ;sprung zu chrout"
  153. 1400 print""tab(14)"taste druecken"
  154. 1410 print""tab(18)"-9-"
  155. 1420 gosub 250 : ona goto 1440 , 1100
  156. 1430 rem*******************************
  157. 1440 rem*--------- seite 10 ----------*
  158. 1450 rem*******************************
  159. 1460 print"[147]haben sie bemerkt, diesmal haben wir"
  160. 1470 print"den dezimalmodus (zahl 65) in den akku"
  161. 1480 print"geladen. wenn in einem (normalen)"
  162. 1490 print"assemblerprogramm das zeichen $[146] weg-"
  163. 1500 print"gelassen wird, dann geht das programm"
  164. 1510 print"von einer dezimalen zahl aus (achtung[146]"
  165. 1520 print"dies gilt nicht fuer alle assembler."
  166. 1530 print"schauen sie am besten in der programman-"
  167. 1540 print"leitung nach. ein zweiter punkt ist der,"
  168. 1550 print"dass am programmende kein rts befehl"
  169. 1580 print""tab(14)"taste druecken"
  170. 1590 print""tab(17)"-10-"
  171. 1600 gosub 250 : on a goto 1610 , 1250
  172. 1610 rem*******************************
  173. 1620 rem*------ seite 11 -------------*
  174. 1630 rem*******************************
  175. 1640 print"[147]ist, der die rueckkehr zu basic er-"
  176. 1650 print"moeglicht. das geheimnis ist ganz ein-"
  177. 1660 print"fach:am ende der chrout routine befindet"
  178. 1670 print"sich ein rts befehl. waere am ende "
  179. 1680 print"unseres programms ein rts befehl, dann"
  180. 1690 print"waere ein byte vergeudet, da nicht mehr"
  181. 1700 print"in unser programm zurueckgekehrt wird."
  182. 1710 print"dies waere nur der fall, wenn wir einen"
  183. 1720 print"jsr-befehl benutzt haetten. das programm"
  184. 1740 print""tab(14)"taste druecken"
  185. 1750 print""tab(17)"-11-"
  186. 1760 gosub 250 : on a goto 1780 , 1440
  187. 1770 rem*******************************
  188. 1780 rem*----------- seite 12 --------*
  189. 1790 rem*******************************
  190. 1800 print"[147]sieht so aus :"
  191. 1810 print" lda #65  ;65 in den akku laden"
  192. 1820 print" jsr $ffd2;sprung zu chrout"
  193. 1830 print" rts      ;zurueck ins basic"
  194. 1850 print"sie wissen jetzt auch, dass sie hier   "
  195. 1860 print"nicht das programm abbrechen muessen,  "
  196. 1870 print"sondern sie koennen jetzt ganz gewohnt "
  197. 1880 print"fortfahren mit ihrem programm."
  198. 1890 print""tab(14)"taste druecken"
  199. 1900 print""tab(17)"-12-"
  200. 1910 gosub 250 : on a goto 1920 , 1610
  201. 1920 rem*******************************
  202. 1930 rem*------- seite 13 ------------*
  203. 1940 rem*******************************
  204. 1950 print"[147]geben sie wieder ihr geraet ein"
  205. 1960 a$ = "" : input"d[146] oder f[146]";a$
  206. 1970 if a$ = "d" then f=1 : goto 2000
  207. 1975 if a$ = "z" then goto 1770
  208. 1980 if a$ = "f" then f=8 : goto 2000
  209. 1985 if a$ = "" then end
  210. 1990 goto 1960
  211. 2000 poke 2,f : poke 46 , 8:poke 45,3 : poke 2050 ,0:load "lektion 7" , peek(2)
  212.